﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QLTuyenXe.DAL;
using System.Collections;
using System.Data;
using QLTuyenXe.DAO;

namespace QLTuyenXe.BLL
{
    class BLaiXe
    {
        MyConnectUnit myConnU = new MyConnectUnit();

        //Danh sach cac lai xe
        public ArrayList Selects()
        {
            ArrayList laixes = new ArrayList();
            DataTable tb = new DataTable();

            tb = myConnU.Selects("LAI_XE", "QUAN_LY_XE", "TUYEN_XE", "manv", "ten", "soCMND", "quequan", "bienso", "tentuyen", "LAI_XE.maxe = QUAN_LY_XE.maxe", "LAI_XE.matuyenxe = TUYEN_XE.matuyenxe");
            if (tb != null)
                foreach (DataRow r in tb.Rows)
                {
                    LX lx = new LX();
                    lx.Manv = r["manv"].ToString();
                    lx.Ten = r["ten"].ToString();
                    lx.SoCMND1 = r["SoCMND"].ToString();
                    lx.Quequan = r["quequan"].ToString();
                    lx.Tenxe = r["bienso"].ToString();
                    lx.Tentuyen = r["tentuyen"].ToString();
                    laixes.Add(lx);
                }
            return laixes;
        }

        //Tim kiem lai xe
        public ArrayList Selects(String condition)
        {
            ArrayList laixes = new ArrayList();
            DataTable tb = new DataTable();

            tb = myConnU.Selects("LAI_XE", "QUAN_LY_XE", "TUYEN_XE", "manv", "ten", "soCMND", "quequan", "bienso", "tentuyen", "LAI_XE.maxe = QUAN_LY_XE.maxe", "LAI_XE.matuyenxe = TUYEN_XE.matuyenxe", condition);
            if (tb != null)
                foreach (DataRow r in tb.Rows)
                {
                    LX lx = new LX();
                    lx.Manv = r["manv"].ToString();
                    lx.Ten = r["ten"].ToString();
                    lx.SoCMND1 = r["SoCMND"].ToString();
                    lx.Quequan = r["quequan"].ToString();
                    lx.Tenxe = r["bienso"].ToString();
                    lx.Tentuyen = r["tentuyen"].ToString();
                    laixes.Add(lx);
                }
            return laixes;
        }

        public ArrayList Select(String columns, String condition)
        {
            return this.Select(columns, condition, null);
        }

        //public ArrayList Selects(String columns1, String columns2, String columns3, String columns4,  String columns5, String columns6, String on, String on1)
        //{
        //    return this.Selects(columns1, columns2, columns3, columns4, columns5, columns6, on, on1, null);
        //}

        public ArrayList Select(String columns, String condition, String order)
        {
            ArrayList laixes = new ArrayList();
            DataTable tb = new DataTable();
            tb = myConnU.Select("LAI_XE", columns, condition, order);
            if (tb != null)
                foreach (DataRow r in tb.Rows)
                {
                    LAIXE lx = new LAIXE();
                    lx.Manv = r["manv"].ToString();
                    lx.Ten = r["ten"].ToString();
                    lx.SoCMND1 = r["soCMND"].ToString();
                    lx.Quequan = r["quequan"].ToString();
                    lx.Maxe = r["maxe"].ToString();
                    lx.Tuyenxe_id = (r["matuyenxe"].ToString());
                    laixes.Add(lx);
                }
            return laixes;
        }

        public ArrayList Selects(String columns, String condition)
        {
            return this.Select(columns, condition, null);
        }

        public ArrayList Select(String columns)
        {
            return this.Select(columns, null);
        }

        public ArrayList Select()
        {
            return this.Select("*");
        }

        //Kiểm tra xem xe đã có người lái chưa
        public bool kt(string condition)
        {
            bool kt = false;
            ArrayList dieuhanhs = new ArrayList();
            DataTable tb = new DataTable();
            tb = myConnU.Select("LAI_XE", "*", "maxe='" + condition + "'");
            if (tb.Rows.Count > 1)
            {
                kt = false;
            }
            else
            {
                kt = true;
            }
            return kt;
        }

        public String getOrder()
        {
            string strID = myConnU.GetTopDataCell("LAI_XE", "manv");
            string strID1;
            string strID2;
            strID1 = strID.Substring(0, 2);
            strID2 = strID.Substring(2, 5);
            int autoNum = Convert.ToInt32(strID2) + 1;

            if (autoNum < 10)
                return strID1 + "0000" + autoNum;

            else if (autoNum >= 10 && autoNum < 100)
                return strID1 + "000" + autoNum;

            else if (autoNum >= 100 && autoNum < 1000)
                return strID1 + "00" + autoNum;
            else if (autoNum >= 1000 && autoNum < 10000)
                return strID1 + "0" + autoNum;
            else if (autoNum >= 10000 && autoNum < 100000)
                return strID1 + "" + autoNum;

            else
                return "";
        }

        public int Insert(LAIXE laixe)
        {
            ColumnData manv = new ColumnData("manv", 1, laixe.Manv.ToString());
            ColumnData ten = new ColumnData("ten", 1, laixe.Ten.ToString());
            ColumnData soCMND = new ColumnData("soCMND", 1, laixe.SoCMND1.ToString());
            ColumnData quequan = new ColumnData("quequan", 1, laixe.Quequan.ToString());
            ColumnData maxe = new ColumnData("maxe", 1, laixe.Maxe.ToString());
            ColumnData tuyenxe_id = new ColumnData("matuyenxe", 1, laixe.Tuyenxe_id.ToString());
            ArrayList columnData = new ArrayList();
            columnData.Add(manv);
            columnData.Add(ten);
            columnData.Add(soCMND);
            columnData.Add(quequan);
            columnData.Add(maxe);
            columnData.Add(tuyenxe_id);
            return myConnU.Insert("LAI_XE", columnData);
        }

        public int Insert(ArrayList laixes)
        {
            int count = 0;
            foreach (LAIXE lx in laixes)
            {
                count += this.Insert(lx);
            }
            return count;
        }

        public int Update(LAIXE laixe, String condition)
        {
            ColumnData ten = new ColumnData("ten", 1, laixe.Ten.ToString());
            ColumnData soCMND = new ColumnData("soCMND", 1, laixe.SoCMND1.ToString());
            ColumnData quequan = new ColumnData("quequan", 1, laixe.Quequan.ToString());
            ColumnData maxe = new ColumnData("maxe", 1, laixe.Maxe.ToString());
            ColumnData tuyenxe_id = new ColumnData("matuyenxe", 1, laixe.Tuyenxe_id.ToString());
            ArrayList columnDatas = new ArrayList();
            columnDatas.Add(ten);
            columnDatas.Add(soCMND);
            columnDatas.Add(quequan);
            columnDatas.Add(maxe);
            columnDatas.Add(tuyenxe_id);
            return myConnU.Update("LAI_XE", columnDatas, condition);
        }

        public int Update(ArrayList laixes, String condition)
        {
            int count = 0;
            foreach (LAIXE lx in laixes)
            {
                count += this.Update(lx, condition);
            }
            return count;
        }

        public int Delete(String condition)
        {
            return myConnU.Delete("LAI_XE", condition);
        }

        public int GetMaxId()
        {
            return myConnU.GetMaxId("LAI_XE", "manv");
        }
    }
}
